﻿import os
import subprocess
import pytest
import time


def run_tests_and_generate_report():
    # 定义 Allure 报告的临时目录和最终输出目录
    allure_results_dir = "reports_data"
    allure_report_dir = "reports"

    try:
        # 执行 pytest 测试并将结果输出到 allure-results 目录
        pytest_cmd = [
            "pytest",
            "./test_case",  # 指定测试文件
            f"--alluredir={allure_results_dir}",  # 指定 Allure 结果目录
            "-v"  # 显示详细输出
        ]
        subprocess.run(pytest_cmd, check=True)

        # 生成 Allure 报告
        if os.path.exists(allure_results_dir) and os.listdir(allure_results_dir):
            allure_cmd = [
                "allure",
                "generate",
                allure_results_dir,
                "-o",
                allure_report_dir,
                "--clean"
            ]
            subprocess.run(allure_cmd, check=True)
            print(f"Allure 报告已生成到 {allure_report_dir} 目录")

            # 可选：自动打开报告
            open_cmd = ["allure", "open", allure_report_dir]
            subprocess.run(open_cmd)
        else:
            print("未发现测试结果，无法生成 Allure 报告")

    except subprocess.CalledProcessError as e:
        print(f"执行测试或生成报告时出错: {e}")
    except Exception as e:
        print(f"发生未知错误: {e}")

if __name__ == '__main__':
    pytest.main()
    time.sleep(1)
    # 生成测试报告
    # os.system("allure generate ./reports_data -o ./reports --clean")
    run_tests_and_generate_report()